package com.gxa.meiye.admin.advice;

import com.gxa.meiye.core.common.JsonResult;
import com.gxa.meiye.core.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;


@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
    //shiro异常处理


    // 处理业务异常: 将异常信息返回给前端显示
    @ExceptionHandler(BusinessException.class)
    public JsonResult
    handleBusinessException(BusinessException exception) {
        JsonResult jsonResult = new JsonResult();
        jsonResult.setCode("0");
        jsonResult.setMsg(exception.getMessage());
        return jsonResult;
    }
// 处理系统异常: 将异常信息返回给前端打哈哈,系统后台记录日志
    @ExceptionHandler(Exception.class)
    public JsonResult handleException(Exception e) {
// 把系统异常日志记录
        log.info("-----------------begin-----------------------"); //分割线方便阅读
        log.info(String.valueOf(e)); // 先记录异常对象的toString状态: 包括异常类型和异常原因
// 再遍历栈中的异常轨迹: 采用遍历方式
        StackTraceElement[] stackTrace = e.getStackTrace();
        for (StackTraceElement stackTraceElement : stackTrace) {
            log.info(String.valueOf(stackTraceElement));
        }
        log.info("-------------------end---------------------");//分割线方便阅读
                JsonResult jsonResult = new JsonResult();
        jsonResult.setCode("0");
        jsonResult.setMsg("系统开小差了,请稍后再试");
        return jsonResult;
    }
        }